package com.tuars.instalacionesalberti.vistas;

import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import com.tuars.instalacionesalberti.vistas.articulos.*;
import com.tuars.instalacionesalberti.vistas.ayuda.AcercaDe;
import com.tuars.instalacionesalberti.vistas.familia.VistaInsertFamilia;
import com.tuars.instalacionesalberti.vistas.familia.VistaModificarFamilia;
import com.tuars.instalacionesalberti.vistas.familia.VistaMostrarFamilia;
import com.tuars.instalacionesalberti.vistas.marca.VistaInsertarMarca;
import com.tuars.instalacionesalberti.vistas.marca.VistaModificarMarca;
import com.tuars.instalacionesalberti.vistas.marca.VistaMostrarMarca;
import com.tuars.instalacionesalberti.vistas.preferencias.VistaPrincipalPreferencias;

import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.SQLException;

import javax.swing.JSeparator;

/**
 * 
 * @author Jaume Albert� Llompart
 * Classe que crea la interfaz principal de la aplicacion
 * 
 *
 */
@SuppressWarnings("serial")
public class VentanaPrincipal extends JFrame{
	
	private ImageIcon favicon;
	private JLabel lblLogoInstalacionesAlbert;
	
	private VistaInsertArticulos insertarArts;
	private VistaMostrarArticulos mostrarArts;
	
	private VistaInsertFamilia insertarFam;
	private VistaMostrarFamilia mostrarFam;
	
	private VistaInsertarMarca insertarMarca;
	private VistaMostrarMarca mostrarMarcas;
	
	private VistaPrincipalPreferencias viewMainPrefs;
	
	private AcercaDe vistaAcerca;
	
	@SuppressWarnings("deprecation")
	public VentanaPrincipal(){
		this.setTitle("Almacen Electrica Albert\u00ED");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setBounds(100, 100, 1000, 600);
		this.getContentPane().setLayout(null);
		this.setLocationRelativeTo(null);
		this.getContentPane().setBackground(new Color(70, 130, 180));
		
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException | InstantiationException
				| IllegalAccessException | UnsupportedLookAndFeelException e2) {
			//TODO falta JOptionPane
		}
		
		/**
		 * panel donde se abriaran los items del men�
		 */
		final JPanel panel = new JPanel();
		panel.setBounds(10, 11, 964, 519);
		panel.setLayout(null);
		getContentPane().add(panel);
		panel.setBackground(new Color(70, 130, 180));
		
		
		/**
		 * Imagen logo electrica albert�
		 */
		lblLogoInstalacionesAlbert = new JLabel("");
		lblLogoInstalacionesAlbert.setIcon(new ImageIcon("imatges/Logo.png"));
		lblLogoInstalacionesAlbert.setBounds(339, 168, 280, 100);
		panel.add(lblLogoInstalacionesAlbert);
		
		/**
		 * Icon
		 */
		favicon = new ImageIcon("imatges/favicon.gif");
		this.setIconImage(favicon.getImage());
		
		/**
		 * Barra men�
		 */
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		/**
		 * Men� archivo
		 */
		JMenu mnArchivo = new JMenu("Archivo");
		menuBar.add(mnArchivo);
		
		JMenuItem mntmPantallaPrincipal = new JMenuItem("Pantalla principal");
		mntmPantallaPrincipal.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				panel.removeAll();
				panel.add(lblLogoInstalacionesAlbert);
				panel.updateUI();
			}
		});
		mnArchivo.add(mntmPantallaPrincipal);
		
		JSeparator separator = new JSeparator();
		mnArchivo.add(separator);
		
		JMenuItem mntmSalir = new JMenuItem("Salir");
		mntmSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String strSalir = "Seguro que desea cerrar el programa?";
				String strSalirTitle = "Confirmar salida";
				int confirmacion;
				confirmacion = JOptionPane.showConfirmDialog(null, strSalir, strSalirTitle, JOptionPane.YES_NO_OPTION);
				
				if(JOptionPane.OK_OPTION == confirmacion){
					System.exit(0);
				}
			}
		});
		mnArchivo.add(mntmSalir);
		
		/**
		 * Men� edici�n
		 */
		JMenu mnEdicion = new JMenu("Edici\u00F3n");
		menuBar.add(mnEdicion);
		
		JMenuItem mntmCopiar = new JMenuItem("Copiar");
		mntmCopiar.disable();
		mnEdicion.add(mntmCopiar);
		
		JMenuItem mntmCortar = new JMenuItem("Cortar");
		mntmCortar.disable();
		mnEdicion.add(mntmCortar);
		
		JMenuItem mntmPegar = new JMenuItem("Pegar");
		mntmPegar.disable();
		mnEdicion.add(mntmPegar);
		
		mnEdicion.addSeparator();
		
		JMenuItem mntmPreferencias = new JMenuItem("Preferencias");
		mntmPreferencias.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				viewMainPrefs = new VistaPrincipalPreferencias();
				viewMainPrefs.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
				viewMainPrefs.setVisible(true);
			}
		});
		mnEdicion.add(mntmPreferencias);
		
		
		
		/**
		 * Menu gestion articulos		
		 */
		JMenu mnGestArt = new JMenu("Gesti\u00F3n articulos");
		menuBar.add(mnGestArt);
		
		JMenuItem mntmInsertarArticulo = new JMenuItem("Insertar articulo");
		mnGestArt.add(mntmInsertarArticulo);
		
		mntmInsertarArticulo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				try {
					insertarArts = new VistaInsertArticulos();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				panel.removeAll();
				insertarArts.setVisible(true);
				panel.add(insertarArts);
				insertarArts.updateUI();
								
			}
		});
		
		mnGestArt.addSeparator();
		
		JMenuItem mntmBuscarArticulo = new JMenuItem("Mostrar articulos");
		mnGestArt.add(mntmBuscarArticulo);
		mntmBuscarArticulo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				mostrarArts = new VistaMostrarArticulos();
				panel.removeAll();
				panel.add(mostrarArts);
				mostrarArts.updateUI();
				mostrarArts.setVisible(true);
			}
		});
		
		JMenuItem mntmModificarArticulo = new JMenuItem("Modificar articulo");
		mnGestArt.add(mntmModificarArticulo);
		
		
		/**
		 * Men� gestion Familia
		 */
		JMenu mnGestinFamilias = new JMenu("Gesti\u00F3n familias");
		menuBar.add(mnGestinFamilias);
		
		JMenuItem mntmIntroducirFamilia = new JMenuItem("Introducir familia");
		mnGestinFamilias.add(mntmIntroducirFamilia);
		mntmIntroducirFamilia.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				insertarFam = new VistaInsertFamilia();
				panel.removeAll();
				insertarFam.setVisible(true);
				panel.add(insertarFam);
				insertarFam.updateUI();
				
			}
		});
		
		mnGestinFamilias.addSeparator();
		
		JMenuItem mntmBuscarFamilia = new JMenuItem("Mostrar familias");
		mnGestinFamilias.add(mntmBuscarFamilia);
		mntmBuscarFamilia.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				mostrarFam = new VistaMostrarFamilia();
				panel.removeAll();
				panel.add(mostrarFam);
				mostrarFam.updateUI();
				mostrarFam.setVisible(true);
			}
		});
		
		JMenuItem mntmModificarFamilia = new JMenuItem("Modificar familia");
		mntmModificarFamilia.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				
				try {
					VistaModificarFamilia viewModFam;
					viewModFam = new VistaModificarFamilia();
					viewModFam.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					viewModFam.setVisible(true);
					viewModFam.obtenerDatosCampos(null, null);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				
			}
		});
		mnGestinFamilias.add(mntmModificarFamilia);
		
		
		/**
		 * Men� gesti�n Marcas
		 */
		JMenu mnGestinMarcas = new JMenu("Gesti\u00F3n Marcas");
		menuBar.add(mnGestinMarcas);
				
		JMenuItem mntmIntroducirMarca = new JMenuItem("Introducir Marca");
		mnGestinMarcas.add(mntmIntroducirMarca);
		mntmIntroducirMarca.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				insertarMarca = new VistaInsertarMarca();
				panel.removeAll();
				insertarMarca.setVisible(true);
				panel.add(insertarMarca);
				insertarMarca.updateUI();
				
			}
		});
		
		mnGestinMarcas.addSeparator();
		
		JMenuItem mntmMostrarMarcas = new JMenuItem("Mostrar Marcas");
		mnGestinMarcas.add(mntmMostrarMarcas);
		mntmMostrarMarcas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				mostrarMarcas = new VistaMostrarMarca();
				panel.removeAll();
				panel.add(mostrarMarcas);
				mostrarMarcas.updateUI();
				mostrarMarcas.setVisible(true);
			}
		});
		
		JMenuItem mntmModificarMarca = new JMenuItem("Modificar Marca");
		mntmModificarMarca.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				try {
					VistaModificarMarca viewModMarca;
					viewModMarca = new VistaModificarMarca();
					viewModMarca.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					viewModMarca.setVisible(true);
					viewModMarca.obtenerDatosCampos(null, null);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		mnGestinMarcas.add(mntmModificarMarca);
		
		
		/**
		 * Menu ayuda
		 */
		JMenu mnAyuda = new JMenu("Ayuda");
		menuBar.add(mnAyuda);
		
		JMenuItem mntmAcercaDelPrograma = new JMenuItem("Acerca del programa");
		mntmAcercaDelPrograma.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				vistaAcerca = new AcercaDe();
				vistaAcerca.setVisible(true);
				vistaAcerca.setBounds(50, 50, 600, 400);
				vistaAcerca.setLocationRelativeTo(null);
			}
		});
		mnAyuda.add(mntmAcercaDelPrograma);
		
		mnAyuda.addSeparator();
				
				
	}
}
